TravelDataSeeder   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 82
Duplicated Lines 0 %

Test Coverage

Coverage 96%

Importance

Changes 0
Metric Value
eloc 63
dl 0
loc 82
ccs 24
cts 25
cp 0.96
rs 10
c 0
b 0
f 0
wmc 5

1 Function

Rating   Name   Duplication   Size   Complexity  
B run 0 80 5
1
import { DataSource } from 'typeorm';
2 7
import { Travel } from '../../travel/entities/travel.entity';
3 7
import { Bicycle } from '../../bicycles/entities/bicycle.entity';
4 7
import { User } from '../../users/entities/user.entity';
5 7
import { Zone } from 'src/zones/entities/zone';
6 7
import { TravelService } from '../../travel/travel.service';
7 7
import { BicyclesService } from '../../bicycles/bicycles.service';
8 7
import { ZonesService } from '../../zones/zones.service';
9 7
import { City } from 'src/cities/entities/city.entity';
10
11 7
export default class TravelDataSeeder {
12
  async run(connection: DataSource): Promise<void> {
13 9
    if (true) {
14
      //process.env.NODE_ENV !== 'production') {
15 9
      const travelRepository = connection.getRepository(Travel);
16 9
      const bikeRepository = connection.getRepository(Bicycle);
17 9
      const userRepository = connection.getRepository(User);
18 9
      const zoneRepository = connection.getRepository(Zone);
19 9
      const cityRepository = connection.getRepository(City);
20
21 9
      const bicycleService = new BicyclesService(bikeRepository, cityRepository);
22 9
      const zonesService = new ZonesService(zoneRepository, bicycleService);
23 9
      const travelService = new TravelService(travelRepository, bicycleService, zonesService);
24
25 9
      const bikes = await bikeRepository.find({ take: 10 });
26 9
      const users = await userRepository.find({ take: 4 });
27
28 9
      let userIndex = 0;
29
30 9
      try {
31 9
        for (const bike of bikes) {
32 24
          await travelService.startRentingBike(bike.id, users[userIndex].githubId);
33
          // console.log(`Created ongoing travel for bike ${bike.id}`);
34 15
          userIndex = (userIndex + 1) % users.length;
35
        }
36
      } catch {
37
        // silently ignore errors, as expected
38
        // console.error('Error creating ongoing travels:', error);
39
      }
40
41
      // Fetch references for existing bikes and customers
42
43
      // Note that bike reference in seed is made by 'batteryLevel' for now
44 9
      const bike1 = await bikeRepository.findOneBy({ batteryLevel: 95 });
45 9
      const bike2 = await bikeRepository.findOneBy({ batteryLevel: 88 });
46 9
      const user1 = await userRepository.findOneBy({ githubId: '149484382' });
47 9
      const user2 = await userRepository.findOneBy({ githubId: '13668660' });
48
49 9
      if (!bike1 || !bike2 || !user1 || !user2) {
50
        throw new Error(
51
          'Bikes or Users not found. Make sure they exist before seeding Travel data.',
52
        );
53
      }
54
55
      // Create travel data
56 9
      const travels = travelRepository.create([
57
        {
58
          bike: bike1,
59
          startTime: new Date('2024-01-01T08:00:00.000Z'),
60
          stopTime: new Date('2024-01-01T09:00:00.000Z'),
61
          latStart: 59.3293,
62
          longStart: 18.0686,
63
          latStop: 59.3328,
64
          longStop: 18.0649,
65
          customer: user1,
66
          cost: 50.0,
67
          startZoneType: 'Free',
68
          endZoneType: 'Parking',
69
        },
70
        {
71
          bike: bike2,
72
          startTime: new Date('2024-01-02T10:00:00.000Z'),
73
          stopTime: new Date('2024-01-02T11:00:00.000Z'),
74
          latStart: 59.3315,
75
          longStart: 18.07,
76
          latStop: 59.3299,
77
          longStop: 18.071,
78
          customer: user2,
79
          cost: 75.0,
80
          startZoneType: 'Parking',
81
          endZoneType: 'Free',
82
        },
83
      ]);
84
85
      // console.log('Bike1:', bike1);
86
      // console.log('Bike2:', bike2);
87
      // console.log('User1:', user1);
88
      // console.log('User2:', user2);
89
90
      // try {
91 9
      await travelRepository.save(travels);
92
      //     console.log('Travel data saved successfully!');
93
      // } catch (error) {
94
      //     console.error('Error saving travels:', error);
95
      // }
96
    }
97
  }
98
}
99